<?php
/*
 * Datei: delete_department.php
 * Funktion: Löscht Abteilungen, wenn keine Beziehung zwischen Abteilung
 *           und Personen besteht.
 * Autor:    Alexander Palmer
 * Version:  01.03.2013
 */

require_once ('../../lib/database.inc.php');
require_once ('../../lib/html.inc.php');

// Beschaffen des Primär-Keys des zu modifizierenden Datensatzes
$idDp = $_GET['id'];

// Verbindung zur Datenbank herstellen
$link = connectDB();

// Vorbereitung des Statements. Zähle alle Datensätze, welche mit der
// Abteilungs-ID in Beziehung stehen.
$sql = "SELECT COUNT(*)as count FROM person, department WHERE 
    person.id_dep_fk=department.id AND department.id=$idDp";

// Alternativ könnten auch nur die Anzahl der Datensätze aus der Tabelle
// person gezählt werden, welche im Attribut id_dep_fk den Primär-Key
// des Datensatzes besitzen, welcher gelöscht werden muss.
// $sql = "SELECT id_dep_fk AS fk FROM person WHERE id_dep_fk=$idDp"
// Sende Statement an Datenbank und speichere ResultSet in Variable
$result = mysqli_query($link, $sql);

// Wandle Datensatz in Array um
$row = mysqli_fetch_array($result);

// Wie viele Datensätze wurden gefunden 
$count = $row['count'];

// Wenn abhängige Datensätze gefunden wurde, wird ein error-Flag gesetzt
if ($count > 0) {
  $error = true;
  $errorExists = true;
}

// Wenn kein error-Flag gesetzt wurde, kann Datensatz aus der Datenbank
// gelöscht werden.
if (!isset($error)) {
  $sql = "DELETE FROM department WHERE id=$idDp";
  $status = mysqli_query($link, $sql);

  // Falls das Löschen nicht geklappt hat, error-Flag setzen
  if ($status) {
    header('Location: show_department.php');
  } else {
    $errorDelete = true;
  }
}
?>
<?php generateHeader('Person entfernen', '../css/default.css'); ?>
<h1>Fehlermeldung</h1>
<div id="content">
  <?php
// Wenn das error-Flag gesetzt wurde, also noch Personen an der Abteilung
// hängen, wird eine Information ausgegeben.
  if (isset($errorExists)) {
    echo '<p class="error">Es ist nicht m&ouml;glich die Abteilung zu
          l&ouml;schen, da noch Personen mit dieser Abteilung
          in Verbindung stehen.<br /> Bitte weisen Sie jenen Personen, 
          welche mit der zu l&ouml;schenden Abteilung in Verbindung stehen eine
          andere Abteilung zu und versuchen Sie es erneut.</p>';

    echo '<p>Folgende Personen stehen in Beziehung zu dieser Abteilung</p>';

    // Beschaffe alle Vor- und Nachnamen jener Personen, welche noch an der
    // ID der zu löschenden Abteilung hängen.
    $sql = "SELECT firstname, lastname FROM person WHERE id_dep_fk=$idDp";

    // Anfrage zum Datenbankserver senden und Antwort speichern
    $result = mysqli_query($link, $sql);

    // Ungeordnete Liste aufbauen und die Namen ausgeben.
    echo '<ul>';
    while ($row = mysqli_fetch_array($result)) {
      echo '<li>' . $row['firstname'] . ' ' . $row['lastname'] . '</li>';
    }
    echo '</ul>';

    // Navigation anzeigen
    echo '<p><a href="../person/show_person.php">Alle Personen anzeigen</a></p>';
    echo '<p><a href="show_department.php">Alle Abteilungen anzeigen</a></p>';
  }

// Ganz kritischer Fehler!!! Obschon keine Personen an der Abteilung hängen
// kann der Datensatz nicht gelöscht werden. Hier muss ein Admin eingreifen.
  if (isset($errorDelete)) {
    echo '<p class="error">Leider konnte die Abteilung nicht 
               gel&ouml;scht werden. Wenden Sie sich an den Administrator</p>';
  }
  ?>
</div>
<?php generateFooter(); ?>
